When deploying applications to a number of locations or when some of the deployed files encode the relationships between the files, it is usually not recommended to simply copy files from one location to another. Instead, it is often better to create and deploy packages. A package is a set of code files and other resources that are used to create an application. Often, creating packages for deployment is a complex task that involves a variety of tools and involves labor-intensive, error-prone tasks such as hand-editing complex documents and maintaining long lists of files to be included in the package. For example, application and server platforms often have very specific and complex standards for the deployment and installation of new components that make manually creating packages difficult.